import { useAuthStore } from '@/stores/auth'

/**
 * 需要身份验证的路由守卫
 * 用于保护需要登录才能访问的路由
 */
export const authGuard = async (to, from, next) => {
  const authStore = useAuthStore()
  
  // 使用增强的验证方法
  const isValidLogin = await authStore.validateLogin()
  
  if (!isValidLogin) {
    // 用户未登录或登录状态无效，重定向到登录页面
    console.log('登录验证失败，重定向到登录页面')
    next({
      path: '/login',
      query: { redirect: to.fullPath }  // 保存原本要访问的路径，便于登录后重定向
    })
  } else {
    console.log('登录验证成功，允许访问')
    // 用户已登录且验证通过，允许访问
    next()
  }
}

/**
 * 游客路由守卫
 * 用于限制已登录用户访问特定页面(如登录页)
 */
export const guestGuard = (to, from, next) => {
  const authStore = useAuthStore()
  
  if (authStore.isLoggedIn) {
    // 用户已登录，重定向到首页或之前尝试访问的页面
    const redirectPath = to.query.redirect || '/'
    next({ path: redirectPath })
  } else {
    // 用户未登录，允许访问
    next()
  }
}

// 处理注册参数
export function handleRegisterParam(to, from, next) {
  // 如果URL中有register=true参数，则在组件中处理显示注册表单
  if (to.path === '/login' && to.query.register === 'true') {
    to.params.showRegister = true
  }
  next()
} 